<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // ES6对于对象写法的更新 ；
        // 1. 对象里函数的简写 ；
        // var obj = {
        //     myname:"张三",
        //     fn:function(){
        //         console.log("fn")
        //     }
        // }

        // 使用箭头函数改写 

        // var obj = {
        //     myname:"张三",
        //     fn:()=>{
        //         console.log("fn")
        //     }
        // }
        // obj.fn();


        //简写函数 ：

        // var obj = {
        //     myname:"张三",
        //     fn(){  // es6对象里函数的简写 
        //         console.log("fn")
        //     },
        //     fn2:function(){  // es5的写法
        //         console.log("fn2")
        //     }
        // }

        // console.log(obj);
        // obj.fn();
        // obj.fn2();

        // 2. 键名和键值的简写  ；
        // 对象里的键名和键值相同的时候 可以省略掉一个；

        // var myname = "张三";
        // var age = 20;

        // var obj = {
        //     // myname:myname, // 键名和键值 相同了 ，可以简写一个；
        //     myname,
        //     age,
        //     height:"178cm"
        // }
        // console.log(obj);

        // 3.动态的键名 ；键名可以是变量 ；
        // 对象里 如果键名需要解析变量 那么 需要加上 []; 
        
        // 对象的键名不能重复     键名只能是字符串
        // var myobj = {test:"hello"};
        // var myage = "age"
        // var str = "hello"; 
        // var obj = {
        //     myname:"张三",
        //     [myage]:myage,
        //     [str+"1"]:"你好",
        //     [myobj]:"hello"
        // }

        // console.log(obj);

        // for(let key in obj){
        //     console.log(typeof key);
        // }


        // 数组去重  ,利用对象的键名不重复特性；
        // var arr = ["a","b","c","b","a","b"];
        // // 统计 arr里 字符出现的次数 {a:2,b:3,c:1}
        // var obj = {};
        // for(let i=0;i<arr.length;i++){
        //     console.log(arr[i]);
        //     obj[arr[i]] = 1;
        // }
        // console.log(obj);
        // var newarr = [];
        // for(let key in obj){
        //     newarr.push(key);
        // }
        // console.log(newarr);


        // 统计字符出现的次数
        var arr = ["a","a","b","b"];
        var obj = {};
        for(let i=0;i<arr.length;i++){
            // 如果第一次 循环到字符 
            if(obj[arr[i]]){
                // 非第一次 进入
                obj[arr[i]]++;
            }else{
                // 第一次进来
                obj[arr[i]] = 1;  // 初始化成1
            }
        }
        console.log(obj);
        /* 
              第一次 ： i = 0; ----> arr[i] == "a" --->  obj['a'] = undefined；  进入判断  进入 else 里  obj['a'] = 1; ---> obj = {a:1}
                第二次 ： i = 1 ---->arr[1] = "a" ----> obj['a']=1 进入判断  进入 if判断  --- obj['a']++  ----> obj['a'] = 2;---->
                    obj = {a:2}
                第三次  i= 2 ---->  arr[2] = b  --->obj['b'] == undefined;---> 进入 else  ----> obj['b'] = 1; ---->obj = {a:2,b:1}
        
        */ 
          
        
        

    </script>
</body>
</html>